<?php
/* 
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
require_once "../negocio/Cliente.php";
require_once "../negocio/Inscricao.php";
require_once "../DAO/ClienteDAO.php";
require_once "../DAO/InscricaoDAO.php";

//pagseguro
require_once "../PagSeguroLibrary/PagSeguroLibrary.php";

//verifica se vem um cpf no POST
if(!isset($_POST['cpf'])){
    echo "<script language='javascript'>";
    echo "location.href = '../view/'";
    echo "</script>";
}else{
    $realizar= new RealizarInscricao();

    $realizar->getParametros();

    if(!$realizar->verificarCliente()){
        if($realizar->cadastrarClienteEInscricao()){
            echo "Cadastro deu certo";
        }
        else{
            echo "Cadastro fudeu";
        }
    }
    else{
            echo "<script language='javascript'>";
            echo "alert('Este CPF ja esta cadastrado!');";
            echo "location.href = '../view/'";
            echo "</script>";
    }
}

//classe controller para gerenciar a inscrição
 class RealizarInscricao{

    private $cliente;
    private $inscricao;
    private $clienteDAO;
    private $inscricaoDAO;

    public function __construct() {
        $this->clienteDAO= new ClienteDAO();
        $this->inscricaoDAO= new InscricaoDAO();
    }

    //pega os parâmetros do form
     public function getParametros(){
         $this->cliente= new Cliente();
         $this->cliente->setEndereco($_POST["endereco"]);
         $this->cliente->setBairro($_POST["bairro"]);
         $this->cliente->setCompl($_POST["compl"]);
         $this->cliente->setCidade($_POST["cidade"]);
          $this->cliente->setUf($_POST["uf"]);
         $this->cliente->setCep($_POST["cep"]);
        $this->cliente->setNum($_POST["num"]);
        $this->cliente->setTipo($_POST["tipo"]);
        $this->cliente->setNome($_POST["nome"]);
        $this->cliente->setRg($_POST["rg"]);
        $this->cliente->setCpf($_POST["cpf"]);
        $this->cliente->setfone($_POST["fone"]);
        $this->cliente->setCod_fone($_POST["cod_fone"]);
        $this->cliente->setEmail($_POST["email"]);
        $this->cliente->setStatus(true);

     }
     public function validarCliente(){

     }

     //verifica se o cliente existe
     public function verificarCliente(){
        // $this->clienteDAO=new ClienteDAO();
        return $this->clienteDAO->existe($this->cliente->getCpf());
        return true;
     }


     //registra o cliente e a inscricao no sistema
     public function cadastrarClienteEInscricao(){
        if($this->clienteDAO->salvar($this->cliente)){
        //pega o cliente que acabou de ser cadastrado
            $this->cliente= $this->clienteDAO->get($this->cliente->getCpf());

            //verifica se elefoi cadastrado mesmo
            if($this->cliente!=NULL){
                $this->inscricao= new Inscricao();

                $this->inscricao->setCliente($this->cliente->getId());
                //$inscricao->setData_hora(date())


                if($this->cliente->getTipo()=="ESTUDANTE"){
                    $valor = 30.00;
                }
                else{
                    $valor=50.00;
                }
                $this->inscricao->setValor($valor);
                $this->inscricao->gereReferencia($this->cliente->getCpf(), $this->cliente->getData_cad());
                //faz a inscrição dele no sistema
                if($this->inscricaoDAO->salvar($this->inscricao)){
                    $this->requisitarPagSeguro();
                    return true;
                }
                else{
                    return false;
                }
            }
            else{
                return false;
            }
        }
        return false;
       }

     //requisita um pagamento ao pagseguro e redireciona o cliente
     public function requisitarPagSeguro(){
            $paymentRequest = new PaymentRequest();

		// Sets the currency
		$paymentRequest->setCurrency("BRL");

		// Add an item for this payment request
		$paymentRequest->addItem('0001', 'INSCRIÇÃO I CEAP - '.$this->cliente->getTipo(), 1, $this->inscricao->getValor());

		// Sets a reference code for this payment request, it is useful to identify this payment in future notifications.
		$paymentRequest->setReference($this->inscricao->getReferencia());

		// Sets shipping information for this payment request
		//$CODIGO_SEDEX = ShippingType::getCodeByType('SEDEX');
		$paymentRequest->setShippingType(3);
               // $endereco= new Shippin
		$paymentRequest->setShippingAddress($this->cliente->getCep(),  $this->cliente->getEndereco(),  $this->cliente->getNum(),  $this->cliente->getCompl(),  $this->cliente->getBairro(),  $this->cliente->getCidade(),  $this->cliente->getUf(), 'BRA');

		// Sets your customer information.
		$paymentRequest->setSender( $this->cliente->getNome(), $this->cliente->getEmail(), $this->cliente->getCod_fone(), $this->cliente->getFone());

		$paymentRequest->setRedirectUrl("http://www.dimb.com.br");

		try {

			/*
			* #### Crendencials #####
			* Substitute the parameters below with your credentials (e-mail and token)
			* You can also get your credentails from a config file. See an example:
			* $credentials = PagSeguroConfig::getAccountCredentials();
			*/
			$credentials = new AccountCredentials("cesar.consultorjr@gmail.com", "D59489A7186C4CE5A0D3F168DC4F0041");

			// Register this payment request in PagSeguro, to obtain the payment URL for redirect your customer.
			$url = $paymentRequest->register($credentials);
                        //echo $url;
                        header("Location: $url");
			//self::printPaymentUrl($url);

		} catch (PagSeguroServiceException $e) {
			die($e->getMessage());
                        echo "erro";
		}
     }
}

?>
